# 1.谈谈你对面向对象的认识！


# 按照属性和功能进行划分
# 将共同的方法放在对象中
class File(object):
    # 将共同的参数封装在self的对象上
    def __init__(self, a, b, c, d):
        self.a = a
        self.b = b
        self.c = c
        self.d = d

    def file_fetch(self):
        pass

    def file_add(self):
        pass

    def file_update(self):
        pass

    def file_delete(self):
        pass


# 2.什么时候用类？
# 第一种情况
# 多个参数
class Foo(object):
    def __init__(self, a, b, c, d, e, f, g):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f
        self.g = g


def index(obj):
    pass


# 第二种情况
# 处理数据 返回不同的 数据
class Foo(object):
    def __init__(self, a, b, c, d, e, f, g):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f
        self.g = g

    def iphone(self, obj):
        return self.a + self.b

    def car(self, obj):
        return self.a + self.c


# 第三种情况
# 功能嵌套
class A(object):
    def __init__(self):
        self.age1 = 1


class B(object):
    def __init__(self):
        self.age1 = 1
        self.a = A()


class C(object):
    def __init__(self):
        self.age1 = 1
        self.b = B()


class D(object):
    def __init__(self):
        self.age1 = 1
        self.c = C()